// import c3d from "../cc";

// let RevealStyle = c3d.Enum({
//     SQUARE: 1,
//     DIAMOND: 2
// });

// let TileStyle = c3d.Enum({
//     RECT: 1,
//     CIRCLE: 2,
// });
// /*
//  * @features: 功能
//  * @description: 说明
//  * @Date: 2021-10-28 23:04:58
//  * @Author: judu233(769471424@qq.com)
//  * @LastEditTime: 2021-10-28 23:06:03
//  * @LastEditors: judu233
//  */
// export class FBOFow extends c3d.Component {
//     /**
//           * 用于渲染的 Graphics 对象，如果没有提供，会尝试使用 c3d.Node 上 c3d.Mask 对象的内置 Graphics 对象
//           * @property {c3d.Graphics} render
//           * @default null
//           */
//     render: c3d.Graphics;
//     //"单元 tile 的大小尺寸"
//     tileSize = 32;
//     /**"每次揭开迷雾的周边单元格范围" */
//     range = 2;
//     /**"揭开周围单元格的风格，支持钻石形状和矩形" */
//     revealStyle = RevealStyle.DIAMOND;
//     /**"每个单元格的渲染风格，支持圆形和矩形" */
//     tileStyle = TileStyle.CIRCLE;

//     mask: c3d.Mask = null;

//     /* 
//         revealed tiles record array 
//         null : unrevealed
//         1    : revealed as centerCoord
//         2    : revealed as aroundCoord
//     */
//     _revealedTileArray;

//     onLoad() {
//     }
//     start() {
//         if (!this.render) {
//             this.mask = this.node.getComponent(c3d.Mask);
//             if (this.mask) {
//                 this.render = this.mask._graphics;
//             }
//         }
//         this.render.fillColor = c3d.color(0, 0, 0, 255);
//         this._init();
//     }
//     _init() {
//         this._revealedTileArray = {};
//     }
//     _isTileRevealed(tileToReveal) {
//         return (tileToReveal.x in this._revealedTileArray &&
//             tileToReveal.y in this._revealedTileArray[tileToReveal.x] &&
//             (this._revealedTileArray[tileToReveal.x][tileToReveal.y] != ssr.TiledFogOfWarUtil.REVEAL_MARK.AROUND ||
//                 this._revealedTileArray[tileToReveal.x][tileToReveal.y] != ssr.TiledFogOfWarUtil.REVEAL_MARK.CENTER));
//     }
//     _isTileRevealedAsCetner(tileToReveal) {
//         return (tileToReveal.x in this._revealedTileArray &&
//             tileToReveal.y in this._revealedTileArray[tileToReveal.x] &&
//             this._revealedTileArray[tileToReveal.x][tileToReveal.y] == ssr.TiledFogOfWarUtil.REVEAL_MARK.CENTER);
//     }
//     _revealTile(tileToReveal) {
//         if (!this._revealedTileArray[tileToReveal.x]) {
//             // this._revealedTileArray[tileToReveal.x] = [];
//             this._revealedTileArray[tileToReveal.x] = {};
//         }
//         this._revealedTileArray[tileToReveal.x][tileToReveal.y] = ssr.TiledFogOfWarUtil.REVEAL_MARK.AROUND;
//     }
//     _revealTileAsCenter(tileToReveal) {
//         if (!this._revealedTileArray[tileToReveal.x]) {
//             // this._revealedTileArray[tileToReveal.x] = [];
//             this._revealedTileArray[tileToReveal.x] = {};
//         }
//         this._revealedTileArray[tileToReveal.x][tileToReveal.y] = ssr.TiledFogOfWarUtil.REVEAL_MARK.CENTER;
//     }
//     updateFog(pos) {
//         let centerCoord = ssr.TiledFogOfWarUtil.coordFromPos(pos, this.tileSize);
//         if (this._isTileRevealedAsCetner(centerCoord)) {
//             return;
//         }
//         if (this.revealStyle == ssr.TiledFogOfWarUtil.STYLE.SQUARE) {
//             var tilesArray = ssr.TiledFogOfWarUtil.tilesAroundSquare(centerCoord, this.range);
//         }
//         else {
//             var tilesArray = ssr.TiledFogOfWarUtil.tilesAroundDiamond(centerCoord, this.range);
//         }
//         var hasTilesToReveal = false;
//         for (var i = 0; i < tilesArray.length; i++) {
//             var tileToReveal = tilesArray[i];
//             if (this._isTileRevealed(tileToReveal)) {
//                 if (centerCoord.equals(tileToReveal)) {
//                     // mark as centerCoord
//                     this._revealTileAsCenter(tileToReveal);
//                 }
//                 continue;
//             }
//             hasTilesToReveal = true;
//             this._revealTile(tileToReveal);

//             if (this.tileStyle == ssr.TiledFogOfWarUtil.RENDER_STYLE.RECT) {
//                 this.render.rect(
//                     tileToReveal.x * this.tileSize,
//                     tileToReveal.y * this.tileSize,
//                     this.tileSize,
//                     this.tileSize
//                 );
//             }
//             else if (this.tileStyle == ssr.TiledFogOfWarUtil.RENDER_STYLE.CIRCLE) {
//                 this.render.circle(
//                     tileToReveal.x * this.tileSize,
//                     tileToReveal.y * this.tileSize,
//                     this.tileSize

//                 );
//             }
//         }
//         if (hasTilesToReveal) {
//             this.render.fill();
//         }
//     }
//     reset() {
//         this.render.clear();
//         this._revealedTileArray = {};
//     }
// }